package ObjectOriented;

/**
 * JavaBean
      JavaBean是一种Java语言写成的可重用组件。它是一个Java类，它有一个无参数的构造函数，并且它的所有属性都有对应的getter和setter方法。
      使用Introspector.getBeanInfo()可以获取一个JavaBean的所有属性。
 */
import java.beans.*;

public class JavaBean {
  public static void main(String[] args) {
    try {
    BeanInfo info = Introspector.getBeanInfo(Person.class);
    for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
      System.out.println(pd.getName());
      System.out.println("  " + pd.getReadMethod());
      System.out.println("  " + pd.getWriteMethod());
    }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

class Person {
  private String name;
  private int age;
  
  public void setName(String name) {
    this.name = name;
  }
  public void setAge(int age) {
    this.age = age;
  }
  public String getName() {
    return name;
  }
  public int getAge() {
    return age;
  }
}